iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Software Development

Java 17 新登場系列 第 8

Day 8 - 一些其他議題

  • 分享至 

  • xImage
  •  

善用 java.util.Objects (多一個 s)類別

這個類別有幾個好用的靜態方法:

static boolean deepEquals(Object a, Object b)
可以用來比較兩個陣列物件的相等

String[] a=new String[]{"123","456","789"};
String[] b=new String[]{"123","456","789"};

boolean result=a.equals(b);
System.out.println(result);//false

boolean result2=Objects.deepEquals(a, b);
System.out.println(result2);//true

boolean result3=Objects.deepEquals(null, b);
System.out.println(result3);//false

boolean result4=Objects.deepEquals(null, null);
System.out.println(result4);//true

static boolean equals(Object a, Object b)
實用的 equals 會調用物件的 equals 進行比較,且預防了 null pointer exception

String obj1 = new String();
String obj2 = new String();
System.out.println(Objects.equals(obj1, obj2)); //true

obj1 = null;
System.out.println(Objects.equals(obj1, obj2)); //false

obj2 = null
System.out.println(Objects.equals(obj1, obj2)); //true

static int hash(Object... values)
取得可變引數轉成陣列的 hash 值

static String toString(Object o)
得到物件的 toString() 結果,如果物件為 null 則結果為 "null"

static String toString(Object o, String nullDefault)
得到物件的 toString() 結果,如果物件為 null 則結果為 nullDefault String

static T requireNonNull(T obj)
如果不是null則返回物件本身,如果是null丟出 null pointer exception

static T requireNonNull(T obj, String message)
如果不是null則返回物件本身,如果是null丟出 null pointer exception + message 包含在異常訊息中  

static boolean nonNull(Object obj)
如果 obj not null return true, if null return false

亂數串流

使用 java.util.Random 的 ints, longs, doubles 方法:

Random r = new Random();
r.ints(LIMIT)
        .sorted()
        .forEach(System.out::println);

介面的 default 方法衝突:

我有兩個介面有相同的 default 方法(方法簽章完全相同)
則必須要在實作方法中提供此方法的確切實作,不然會編譯錯誤

參考資料:

https://blog.csdn.net/lkforce/article/details/56289349
現代 Java - 輕鬆解決 Java 8 與 9 的難題(O'REILLY)


上一篇
Day 7 - 比較器 & 集合
系列文
Java 17 新登場8
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言